package com.aoip.telemetry.telemetry.configureui.business.analysis.stgroup.service;

import com.aoip.telemetry.telemetry.entity.element.ElementAnalysisGroupConfigEntity;
import com.aoip.telemetry.telemetry.entity.equipment.RelStAnalysisGroupConfigEntity;

import java.util.List;

/**
 * 测站与解析组关联关系配置业务层
 *
 * @author chenbai
 * @version 1.0
 * @date 2021/12/31 14:56
 */
public interface StAnalysisGroupService {


    /**
     * 测站与解析组关联关系列表
     *
     * @param entity 测站与解析组关联关系实体
     * @return java.util.List<com.aoip.telemetry.telemetry.entity.equipment.RelStAnalysisGroupConfigEntity>
     * @author chenbai
     * @date 2021/12/31
     **/
    List<RelStAnalysisGroupConfigEntity> list(RelStAnalysisGroupConfigEntity entity);

    /**
     * 根据主键id查询关联关系信息
     *
     * @param id 测站与解析组关联关系主键
     * @return com.aoip.telemetry.telemetry.entity.equipment.RelStAnalysisGroupConfigEntity
     * @author chenbai
     * @date 2021/12/31
     **/
    RelStAnalysisGroupConfigEntity stGroup(String id);

    /**
     * 根据测站编码和功能码校验是否数据库中已存在
     * 存在返回true，不存在返回false
     * 修改时，若提供的数据id与数据库查询的id一致，表示是同一条数据
     *
     * @param entity 测站与解析组关联关系实体
     * @return boolean
     * @author chenbai
     * @date 2021/12/31
     **/
    boolean checkStGroupExist(RelStAnalysisGroupConfigEntity entity);


    /**
     * 根据测站编码查询该测站有哪些解析组
     *
     * @param stCd 测站编码
     * @return java.util.List<com.aoip.telemetry.telemetry.entity.element.ElementAnalysisGroupConfigEntity>
     * @author chenbai
     * @date 2022/1/10
     **/
    List<ElementAnalysisGroupConfigEntity> analysisGroupListByStCd(String stCd);

    /**
     * 根据解析组编码查询挂载测站列表
     *
     * @param groupId 解析组id
     * @return java.util.List<com.aoip.telemetry.telemetry.entity.element.ElementAnalysisGroupConfigEntity>
     * @author chenbai
     * @date 2022/3/8
     **/
    List<String> stCodesByGroupId(String groupId);

    /**
     * 新增测站与解析组关联关系
     *
     * @param stCd     测站编码
     * @param groupIds 解析组编码集合
     * @return int
     * @author chenbai
     * @date 2021/12/31
     **/
    int insert(String stCd, List<String> groupIds);

    /**
     * 新增测站与解析组关联关系
     *
     * @param stCodes 测站编码集合
     * @param groupId 解析组编码
     * @return int
     **/
    int insert(List<String> stCodes, String groupId);

    /**
     * 修改测站与解析组关联关系
     *
     * @param entity 测站与解析组关联关系实体
     * @return int
     * @author chenbai
     * @date 2021/12/31
     **/
    int update(RelStAnalysisGroupConfigEntity entity);

    /**
     * 初始化数据到redis缓存库
     *
     * @return int
     * @author chenbai
     * @date 2022/3/8
     **/
    int initCache();

    /**
     * 删除测站与解析组关联关系
     *
     * @param ids 一个或多个测站与解析组关联关系主键
     * @author chenbai
     * @date 2021/12/31
     **/
    void delete(long[] ids);
}
